program Project1; //Zadanie 7.2

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  rozmiar = 10;

type
  macierz = array[1..rozmiar,1..rozmiar] of integer;

matrix=class
  tablica, tablica1 : macierz;
  f:Text; //zmienna plikowa
  procedure czytaj_dane();
  procedure zapisz_dane_do_pliku();
  procedure czytaj_dane_z_pliku();
end;

procedure matrix.czytaj_dane();
var
  i,j:integer;
begin
  for i:=1 to rozmiar do //tworzymy tablice 10x10
    begin
      for j:=1 to rozmiar do
        begin
          if i = j then
            tablica[i,j]:=1
           else tablica[i,j]:=0
        end; {j}
    end;   {i}   {Koniec wpisywania}
end;

procedure matrix.zapisz_dane_do_pliku();
var
  i,j:integer;
begin
  Writeln('Zapis danych do pliku dane.txt.');
  Assign(f,'dane.txt');//skojarzenie zmiennej plikowej z plikiem dane.txt
  Rewrite(f); //tworzymy i otwieramy plik
  for i:=1 to rozmiar do
    begin
      for j:=1 to rozmiar do
        begin
          Write(tablica[i,j]:2); //wyswietlamy tablice na ekranie
          Write(f,tablica[i,j]:2); //zapisujemy dane do pliku
        end; {j}
      Writeln;
    end;   {i}
   Close(f); //zamkniecie pliku
end;

procedure matrix.czytaj_dane_z_pliku();
var
  i,j:integer;
begin
  Writeln;
  Writeln('Odczyt danych z pliku dane.txt:');
  Assign(f,'dane.txt'); //skojarzenie zmiennej plikowej z plikiem dane.txt
  Reset(f); //otwarcie pliku, ktory juz istnieje

  for i := 1 to rozmiar do
    begin
      for j:= 1 to rozmiar do
        begin
          Read(f,tablica1[i,j]); //czytamy tablice z pliku
          Write(tablica1[i,j]:2); //wyswietlamy tablice na ekran
        end;
      Writeln;
  end;
  Close(f); //zamkniecie pliku
end;

var
  matrix1:matrix;

begin
  matrix1:=matrix.Create; //konstruktor
  matrix1.czytaj_dane();
  matrix1.zapisz_dane_do_pliku();
  matrix1.czytaj_dane_z_pliku();
  matrix1.Free; //destruktor

  Readln; //czeka na nacisniecie klawisza ENTER
end.
